package com.example.framework.excel.annotation;

import com.example.framework.excel.enums.DecimalType;
import com.example.framework.excel.enums.TimeType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *  Excel 导入导出注解
 * @author gx
 * @date 2021/6/11 9:40
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelExport {

    /** 定义字段排序 */
    int order();

    /**
     * 表头中文
     *
     * @return
     */
    String titleName() default "";

    /**
     * 列宽
     *
     * @return
     */
    int titleSize() default 20;

    /**
     * 是否允许空值 ，默认不允许
     *
     * @return
     */
    boolean empty() default false;

    /**
     * 是否允许空值 ，默认不允许
     *
     * @return
     */
    boolean template() default true;

    /**
     * 内部类
     *
     * @return
     */
    ExcelExport.CellType cellType() default @ExcelExport.CellType;

    /**
     * 内部类
     *
     * @return
     */
    ExcelExport.SheetType sheetType() default @ExcelExport.SheetType;

    /**
     * 设置格式
     *
     * @return
     */
    @interface CellType {

        TimeType timeType() default TimeType.TIMEF_FORMAT;

        DecimalType decimalType() default DecimalType.TWO;

        /**
         * true : 结合decimalType使用
         * @return
         */
        boolean isMoney() default false;
    }

    /**
     * 设置sheet
     *
     * @return
     */
    @interface SheetType {

        /**
         * true : 启用以下两个配置
         * @return
         */
        boolean isSheet() default false;

        int order() default 0;

        String name() default "";

    }

}
